package Top200;

import common.ListNode;

/**
 * @author zhangmin
 * @create 2022-02-24 9:03
 * 1、找到倒数第k个位置将其作为新的头
 * 2、直接从链表结尾开始，变成一个环形链表，循环k个节点加入到链表后面，然后到第k个后将其作为头节点即可
 */
public class rotateRight61 {
    public ListNode rotateRight(ListNode head, int k) {
        if (head==null) return null;
        ListNode p=head;
        int count=1;
        while (p.next!=null){
            p=p.next;
            count++;
        }
        ListNode slow=head,fast=head;
        k=k%count;
        if (k==0) return head;
        p.next=head;
        int findIndex=count-k-1;
        while (findIndex>0){
            findIndex--;
            head=head.next;
        }
        ListNode newhead=head.next;
        head.next=null;
        return newhead;
    }
}
